import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Write a description of class Disparo here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class Disparo extends Actor
{
    private int direccion;
   private int x;
   private int y;
   private int dibujo_act=0;
   private String dibujo[];
   private int tipo;
   private int imagenes;
   private Actor colicionSpider;
   private Actor colicionBatman;
   private Actor colicionViuda;
   private Actor colicionIron;
   private Actor colicionOjo;
   private Actor colicionHulk;
   private Actor colicionThor;
   private Actor colicionPlataforma;
    
   private int n=0;

 

   public Disparo(int x,int y , int direccion,int tipo)
   {
      this.x=x;
      this.y=y;
      this.direccion=direccion;
      this.tipo=tipo;
      
      

      if (tipo==0)
      { imagenes=10;
        dibujo=new String[10];
        dibujo[0]="ds1.gif";//imagen bala spider man
        dibujo[1]="ds2.gif";     
        dibujo[2]="ds3.gif";
        dibujo[3]="ds4.gif";
        dibujo[4]="ds5.gif";
        dibujo[5]="ds6.gif";        
        dibujo[6]="ds7.gif";
        dibujo[7]="ds8.gif";
        dibujo[8]="ds9.gif";
        dibujo[9]="ds10.gif";
        this.dibujo_act=0;
      }
       else if(tipo==1)
      {
        imagenes=5;
        dibujo=new String[5];
                
        dibujo[0]="id1.gif";//imagen iron man bala
        dibujo[1]="id2.gif";
        dibujo[2]="id3.gif";
        dibujo[3]="id4.gif";
        dibujo[4]="id5.gif";
        
        this.dibujo_act=0;
       }
         else if(tipo==2)
      {
        imagenes=4;
        dibujo=new String[4];
                
        dibujo[0]="db1.gif";//imagen batman disparo
        dibujo[1]="db2.gif";
        dibujo[2]="db3.gif";
        dibujo[3]="db4.gif";
              
        this.dibujo_act=0;
       }
       else if(tipo==3)
       {
           //viuda negra
            dibujo=new String[1];
           dibujo[0]="bala.gif";
       }
       else if(tipo==4)
       {
           //ojo de hacon
           dibujo=new String[1];
           dibujo[0]="flecha.gif";
       }
       
       else if(tipo==5)
       {
           //thor
           dibujo=new String[1];
           dibujo[0]="martillo.gif";
       }
       
       else if(tipo==6)
       {
           //hulk
       }
              
    }  
      
   /**
    * este es el actuar donde cada pulsacion va haciendo el incremento y la bala va viajando sola
    */
      
    public void act() 
    {
        GreenfootImage imagen;
        int inc=20;
        World mundo=getWorld();
         if(direccion==0)
          move(inc);
        else
          move(-inc);
         
          if (this.dibujo_act<this.imagenes-1)
          {
              this.dibujo_act++;
          }
          else
           {
              this.dibujo_act=0;
           }
        
         this.setImage(this.dibujo[this.dibujo_act]);
          imagen=this.getImage();
          if(tipo==4)
             {
             imagen.scale(90,10);
             }
          else if(tipo==5)
             {
             imagen.scale(25,45);
             }   
         
             if(direccion== 1)
        {
            imagen=this.getImage();
            imagen.mirrorHorizontally();
            this.setImage(imagen); 
        }
        
       
        
        colicionSpider = this.getOneObjectAtOffset(0,0,Spiderman.class);
        colicionBatman = this.getOneObjectAtOffset(0,0,Batman.class);
        colicionViuda = this.getOneObjectAtOffset(0,0,ViudaNegra.class);
        colicionIron = this.getOneObjectAtOffset(0,0,IronMan.class);
        colicionOjo = this.getOneObjectAtOffset(0,0,OjoHalcon.class);
        colicionHulk = this.getOneObjectAtOffset(0,0,Hulk.class);
        colicionThor = this.getOneObjectAtOffset(0,0,Thor.class);
        colicionPlataforma=this.getOneObjectAtOffset(0,0,Bloque2.class);
        
            if (colicionSpider != null && (tipo==1 || tipo>=3))// verifica si la bala le pego a spider man
            {
                if(((Mundo)mundo).dameN(0)==5)
                     {
                      regresa_todo();
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(0); 
                         getWorld().removeObject(this);
                        }
            }
        
        
            else if (colicionBatman != null && (tipo==1 || tipo>=3))// verifica si la bala le pego a batman
            {
                if(((Mundo)mundo).dameN(2)==5)
                     {
                      regresa_todo();
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(2); 
                         getWorld().removeObject(this);
                        }
            } 
         
        
            else if (colicionViuda != null && (tipo ==0 || tipo==2))// verifica si le pego a la viuda
            {
                if(((Mundo)mundo).dameN(3)==5)
                     {
                      //regresa_todo();
                       ((Mundo)mundo).muertes();
                        getWorld().removeObject(colicionViuda);
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(3); 
                         getWorld().removeObject(this);
                        }                
                   
                 
            }
              
            else if (colicionIron != null && (tipo ==0 || tipo==2))// verificacion iron man
            {
                if(((Mundo)mundo).dameN(1)==5)
                     {
                      //regresa_todo();
                       ((Mundo)mundo).muertes();
                       getWorld().removeObject(colicionIron);
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(1); 
                         getWorld().removeObject(this);
                        }                
                   
                 
            }
                  else if (colicionOjo != null && (tipo ==0 || tipo==2))// verificacion ojo Halcon
            {
                if(((Mundo)mundo).dameN(4)==5)
                     {
                      //regresa_todo();
                       ((Mundo)mundo).muertes();
                       getWorld().removeObject(colicionOjo);
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(4); 
                         getWorld().removeObject(this);
                        }                
                   
                 
            }
                   else if (colicionThor != null && (tipo ==0 || tipo==2))// verificacion Thor
            {
                if(((Mundo)mundo).dameN(5)==5)
                     {
                      //regresa_todo();
                       ((Mundo)mundo).muertes();
                       getWorld().removeObject(colicionThor);
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(5); 
                         getWorld().removeObject(this);
                        }                
                   
                 
            }
                   else if (colicionHulk != null && (tipo ==0 || tipo==2))// verificacion Hulk
            {
                if(((Mundo)mundo).dameN(6)==15)
                     {
                      //regresa_todo();
                       ((Mundo)mundo).muertes();
                       getWorld().removeObject(colicionHulk);
                        ((Mundo)mundo).borrartodo();   
                        ((Mundo)mundo).Congratulations();
                       
                     }
                   else{ 
                         ((Mundo)mundo).cambiaN(6); 
                         getWorld().removeObject(this);
                        }                
                   
                 
            }
              else if (colicionPlataforma != null)//rompe las plataformas con disparos de cualquier tipo
            {
                       
                       ((Mundo)mundo).removeObject(colicionPlataforma);
                       ((Mundo)mundo).removeObject(this);
            }                
                   
                 
            
            
            else if (this.getX()==0||this.getX()>=this.getWorld().getWidth()-10 ||this.getY()==0 ||this.getY()>=this.getWorld().getHeight()-10)
                {
                getWorld().removeObject(this);            
                }         
            
        
        //}
   } 
   
    /**
     * este es el metodo que se llama cuando pierde por el contacto de algun enemigo.
     */
     public void regresa_todo()
     {
           World mundo=getWorld(); 
         ((Mundo)mundo).reseteanivel();
             ((Mundo)mundo).cambiaN(7);
            // getWorld().removeObject(colicion);
             ((Mundo)mundo).borrartodo();
             ((Mundo)mundo).cambiaScrollgameover();
              mundo.addObject(new Flecha(),750,550);
     }
}
